/**
 * @file globalParam.hpp
 * @author axi404 (3406402603@qq.com)
 * @brief 参数列表文件，由结构体与枚举组成，暂时仅包括相机需要的参数
 * @version 1.0
 * @date 2022-12-25
 *
 * @copyright Copyright (c) 2022
 *
 */
#if !defined(__GLOBALPARAM_HPP)
#define __GLOBALPARAM_HPP

#include "MvCameraControl.h"

enum COLOR
{
    RED = 0,
    BLUE = 1
};

enum ATTACK_MODE
{
    ENERGY = 0,
    ARMOR = 1
};

enum SWITCH
{
    OFF = 0,
    ON = 1
};

struct GlobalParam
{
    //================全局部分================//

    // 当前颜色
    int color = RED;
    // 调试信息，INFO等级的日志是否输出
    int switch_INFO = OFF;

    //================相机部分================//

    // 当前使用的相机序号，只连接一个相机时为0，多个相机在取流时可通过cam_index选择设备列表中对应顺序的相机
    int cam_index = 0;
    //===曝光时间===//
    MV_CAM_EXPOSURE_AUTO_MODE enable_auto_exp = MV_EXPOSURE_AUTO_MODE_OFF;
    float energy_exp_time = 200.0F;
    float armor_exp_time = 290.0F;
    //===白平衡===/
    // 默认为目标为红色的白平衡
    // 红色通道
    int r_balance = 1500;
    // 绿色通道
    int g_balance = 1024;
    // 蓝色通道
    int b_balance = 4000;
    //===以下参数重点参与实际帧率的调节===//
    // 图像格式，设置为Bayer RG8，更多图像格式可前往MVS的SDK中寻找
    unsigned int pixel_format = PixelType_Gvsp_BayerRG8;
    // 在经过测试之后，包括在官方SDK中没有调整Acquisition Frame Rate Control Enable的参数，不过在MVS软件中调试时此选项关闭后依然可以达到期望帧率
    //===其他参数===//
    // 自动相机增益使能
    MV_CAM_GAIN_MODE enable_auto_gain = MV_GAIN_MODE_OFF;
    // 相机增益值
    float gain = 17.0F;
    // 相机伽马值，只有在伽马修正开启后有效
    float gamma_value = 0.7F;
    // 触发方式，从0至3依次为触发上升沿、下降沿、高电平、低电平
    int trigger_activation = 0;
    // 设置帧率，仅在不设置外触发时起效
    float frame_rate = 180.0F;
    // 触发模式，ON为外触发，OFF为内触发
    MV_CAM_TRIGGER_MODE enable_trigger = MV_TRIGGER_MODE_OFF;
    // 触发源
    MV_CAM_TRIGGER_SOURCE trigger_source = MV_TRIGGER_SOURCE_LINE0;
};
#endif //__GLOBALPARAM_HPP
